Developing software applications can be a complex process and often programming errors, or bugs, are introduced during the design and/or development of the software. In some cases, the bugs occur due to flaws in the design of the software. In other cases, the bugs occur due to errors in implementation of the software design. Regardless of the source of bugs, identifying the existence of the bugs and locating the source of the bugs can be a time-consuming and costly exercise.
Some organizations perform minimal application testing. These organizations often release software with a number of bugs because, for example, the high cost of identifying and fixing the bugs is considered too high by the organizations. While releasing buggy software may be acceptable for some consumers or industries, this is often not the case. Thus, extensive time and resources are often expended in identifying and fixing software bugs before software is released. Often, the procedures must be repeated when new versions of the software are released as new features can sometimes introduce new bugs or reveal previously unidentified bugs. Thus, releasing new versions of software on a repeated basis (e.g., yearly) may prevent or reduce the ability of an organization to spread out the cost of software testing over time.